//
//  FYNewFeatureCollectionViewController.swift
//  dugeweibo
//
//  Created by pelesys on 16/8/6.
//  Copyright © 2016年 杜方宜. All rights reserved.
//

import UIKit
//storyboard 会自动注册cell并且指定layout

//重写集合视图控制器的构造方法
/*
 1.让外界调用更加简单  不需要传参数
 2.layout 和视图的大小比较固定
 reason: 'UICollectionView must be initialized with a non-nil layout parameter
 原因：实例化 CollectionViewController 时必须指定布局参数
 
 
 注意：在 OC 中，不是所有的对象的指定构造函数都是 init()
 NSObject 的指定构造函数是 init()
 UIViewController 的指定构造函数是 initWithNibName
 UICollectionViewController 的指定构造函数是 initWithViewLayout...
 UIView 的指定构造函数是 initWithFrame
 在查阅头文件时，通常会有 designated initializer 标注
 如果没有 designated initializer，可以考虑头文件中的第一个构造函数
 
 
 在 Swift 和 OC 中都允许在同一个文件中定义多个类的情况
 以前上课很少用原因时担心影响大家对代码结构的理解，但是实际开发中，这种情况还是比较普遍的
 一个文件包含多个类的情景
 被包含类仅供当前类使用
 被包含类的代码很少
 
 
 在自定义 tableViewCell 和 collectionViewCell 时都应该将控件添加到 contentView 上
 collectionViewCell 的构造函数中的 frame 大小取决于 layout 的 itemSize
 如 iconView 这样全屏的控件不需要指定自动布局
 */

private let reuseIdentifier = "Cell"
//定义图片的数量
private let imageCount = 4
class FYNewFeatureCollectionViewController: UICollectionViewController {
  
    init(){
       //实例化layout
        let layout = UICollectionViewFlowLayout()
       //1.指定layout的itemSize  cell在实例化的时候,就会使用size
        layout.itemSize = UIScreen.main.bounds.size
        layout.minimumInteritemSpacing = 0
        layout.minimumLineSpacing = 0
        layout.scrollDirection = .horizontal
        super.init(collectionViewLayout:layout)
        //设置分页滚动
        collectionView?.isPagingEnabled = true
        collectionView?.showsHorizontalScrollIndicator = false
        //取消反弹效果
        collectionView?.bounces = false
        
    }
    
    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    
    
    
    
    override func viewDidLoad() {
        super.viewDidLoad()
        //注册cell
        self.collectionView?.register(NewFeatureCell.self , forCellWithReuseIdentifier: reuseIdentifier)

        // Do any additional setup after loading the view.
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    // MARK: UICollectionViewDataSource

    override func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
        // #warning Incomplete implementation, return the number of items
        return imageCount
    }
  
    override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: reuseIdentifier, for: indexPath as IndexPath) as! NewFeatureCell
        
        //设置背景色
        //        cell.backgroundColor = indexPath.item % 2 == 0 ? UIColor.redColor() : UIColor.blueColor()
        cell.index = indexPath.item
        return cell
    }
 

    // MARK: UICollectionViewDelegate
    override func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
        let page = Int(scrollView.contentOffset.x / screenW)
        print(page)
        if page == imageCount - 1 {
            //设置开始按钮的hidden 在动画动显示
            
            //开始动画效果
            if let cell = collectionView?.visibleCells.last as? NewFeatureCell{
                cell.startAnimation()
            }
        }
    }

}

class NewFeatureCell: UICollectionViewCell {
    //MARK:-懒加载实例化子控件
    var iconImage:UIImageView = UIImageView()
    //开始按钮
    var stratButton: UIButton = {
        let btn = UIButton()
        btn.setTitle("开始体验", for: .normal)
        btn.setBackgroundImage(UIImage(named:"new_feature_finish_button"), for: .normal)
        return btn
    }()
    //MARK:显示图片的index
    var index : Int = 0 {
        didSet{
            iconImage.image = UIImage(named: "new_feature_\(index + 1)")
            stratButton.isHidden = true
        }
    }
    //MARK:-开始按钮点击事件
    @objc private func start(){
         print("开始体验")
        NotificationCenter.default.post(name: NSNotification.Name(AppSwitchRootViewControler), object: nil)
    }
    
    //MARK:-开始动画效果
  func startAnimation(){
    stratButton.transform = CGAffineTransform(scaleX: 0, y: 0)
    UIView.animate(withDuration: 1, delay: 0, usingSpringWithDamping: 0.5, initialSpringVelocity: 5, options: [], animations: {
            self.stratButton.isHidden = false
            self.stratButton.transform = CGAffineTransform(scaleX: 1, y: 1)
            }) { (_) in
                print("OK")
        

    }
  }
    
    override init(frame: CGRect) {
        super.init(frame: frame)
        print(frame)
        setupUI()
    }
    
    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    //MARK:-设置UI布局
    private func setupUI(){
        //1.添加子视图
        contentView.addSubview(iconImage)
        contentView.addSubview(stratButton)
        //2.设置约束
        //edges 表示相对于四周约束
        iconImage.snp_makeConstraints { (make) in
            make.edges.equalTo(contentView.snp_edges)
        }
        stratButton.snp_makeConstraints { (make) in
            make.bottom.equalTo(contentView.snp_bottom).offset(-200)
            make.centerX.equalTo(contentView.snp_centerX)
        }
        //3.设置开始按钮点击事件
        stratButton.addTarget(self, action: #selector(start), for: .touchUpInside)
    }
    

    

//     private lazy var startButton: UIButton =  UIButton(title: "开始体验", backImage: "new_feature_finish_button", color: nil)

}
